The present invention relates to robotic systems and, more particularly, to methods for programming robotic systems to perform tasks.
The application of robotics to problems outside traditional "assembly line" tasks requires a great deal of programming and flexibility which represents an increasingly important sector of this field. As described in U.S. Pat. No. 4,843,566--Gordon et al., which is assigned to the assignee of the present invention and incorporated herein by reference, robotics, and in particular controlling a mechanical manipulator, requires complex programming that is not usually within the level of skill of the end user. Toward that end, the Gordon et al. patent discloses a motion control system that simplifies programming tasks for a robotic manipulator that, for example, is used to automate a sequence of processing steps in an analytical chemistry laboratory. Robotic manipulator systems such as those described in the Gordon et al. patent and as defined herein operate using stored information to execute a series of steps. Thus, such robotic manipulator systems typically have one or more computing devices and/or microprocessors for receiving instructions and executing programmed steps.
As known to those skilled in the art of robotic manipulator programming, a given motion can be taught relative to a selected point associated with a piece of equipment in order to define the motion in space. One or more further motions are typically associates with each piece of equipment and can be categorized as motions within a "frame." Each frame has an origin, or frame point, from which the points within the frame are defined. Each frame point can then be defined relative to another and, ultimately, to a global or universal origin. For example, if a test tube rack is positioned on a bench relative to a robotic manipulator, a frame made up of coordinates describing the position of each test tube relative to an arbitrary frame point or points on the rack can be defined. The position of these frame points relative to an origin point can also be defined. It is then a simple matter to program the manipulator to load or unload the test tube rack. However, if the rack is moved to another location on the bench, only the new location of the arbitrary frame point on the rack need be defined relative to the origin. The sequence of relative motions within the frame itself has remained unchanged, i.e., the spacing between the test tubes has remained fixed. A description of the above-described programming technique, denominated "stacked user frames," is disclosed in U.S. Pat. No. 4,456,961--Price et al. As disclosed in the Price et al. patent, a manipulator may be moved from point-to-point manually using a teach pendant or by executing programmed commands until the manipulator is in a frame point location.
Another approach to simplifying the programming of a robotic manipulator used in a flexible application environment is disclosed in U.S. Pat. Nos. 4,689,755--Buote and 4,835,711--Hutchins et al. In the system disclosed, physically separable and connectable modules are programmed with certain commands and data. The central processor can then access and initiate a pre-programmed sequence if a particular module is physically "plugged in" to a location. Thus, each module carries its own "intelligence" such that once given an initiation command, it will carry out a certain sequence of steps and interact with the manipulator. As explained in the Hutchins et al. patent, the robot controller derives its instructions directly from the information programmed into each physical "segment" that can be connected to create a system.
However, despite these advances, a need remains to further simplify the programming of robotic systems. As the degree of programming difficulty is lowered, more end users will be able to apply robotics to an increasingly wide array of tasks. It would be desirable, however, to increase the simplicity of robotic manipulator programming without a consonant decrease in the flexibility of the system. Simplification can be achieved simply by grouping certain commands together and renaming them to create a "higher" level programming language. This solution, however creates an inflexible system incapable of alteration without resort to lower level languages inaccessible or incomprehensible to the end user. Accordingly, it is an object of the present invention to provide a system for programming a robotic manipulator that is both simple and flexible.